package com.hmk.blogboot.web.admin;


import com.hmk.blogboot.po.User;
import com.hmk.blogboot.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

import javax.servlet.http.HttpSession;

@Controller
@RequestMapping("/admin")
public class LoginController {
    //自动注入userService 业务层接口
    @Autowired
    private UserService userService;
    //登录界面接口 GetMapping注解没有指定里面请求路径，使用全局请求路径，也就是类上面的路径
    @GetMapping
    public String loginPage(){
        return "admin/login";
    }

    //校验用户登录接口
    @PostMapping("/login")
    public String login(@RequestParam String username,
                        @RequestParam String password,
                        HttpSession session,
                        RedirectAttributes attributes){
        //使用业务接口userService 调用checkUser方法校验用户登录是否成功
        User user = userService.checkUser(username,password);
        //进行判断 如果user不为空，从数据库中查询到该用户记录，用户名密码正确
        if(user != null){
            //user密码设置为null 后端不可能返回user信息把密码返回，安全
            user.setPassword(null);
            //查询到用户记录设置session中
            session.setAttribute("user",user);
            //登录成功后返回首页
            return "admin/index";
        }else{
            //登录失败
            attributes.addFlashAttribute("message","用户名或密码失败");
            //重定向跳转到admin路径 也就是上面登陆界面接口
            return "redirect:/admin";
        }
    }

        //退出登录 移除掉session中的user key存储key-value数据
    @GetMapping("/logout")
    public String logout(HttpSession session){
        session.removeAttribute("user");
        //重定向到admin路径 也就是上面的登录界面接口
        return "redirect:/admin";
    }


}

